home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / bookmarks / bookmarksdlg.js next >
Text File  |  2009-12-16  |  5KB  |  191 lines

  1. /*
  2.  * bookmarksdlg.js
  3.  *
  4.  * @author    david marteau <marteau.david@free.fr>
  5.  * @copyright 2005-2006 Yoono
  6.  */
  7.  
  8. const CI = Components.interfaces;
  9. const CL = Components.classes;
  10.  
  11. const RDF    = CL['@mozilla.org/rdf/rdf-service;1'].getService(CI.nsIRDFService);
  12. const PREFS  = CL['@mozilla.org/preferences-service;1'].getService(CI.nsIPrefBranch);
  13. const PROMPT = CL["@mozilla.org/embedcomp/prompt-service;1"].getService(CI.nsIPromptService);
  14.  
  15. const BKM_NS_PREFIX = "http://yoono.com/bkm-rdf#";
  16. const kHistoryPref  = "extensions.yoono.bookmarks.maxhistory";
  17.  
  18. var gDialog = {}
  19. var gBkmService = null;
  20.  
  21. /*!
  22.  * Display Archive from rdf content
  23.  */
  24. function displayArchive( name , res )
  25. {
  26.    const kLinkRes = RDF.GetResource(BKM_NS_PREFIX+"count");
  27.  
  28.    var archive = gBkmService.archiveFolder;
  29.    archive.append( name + ".rdf" );
  30.  
  31.    var urn;
  32.    var links = "";
  33.    
  34.    if(archive.exists()) 
  35.    {
  36.      var ioSrvc   = CL["@mozilla.org/network/io-service;1"].getService(CI.nsIIOService);
  37.      var fHandler = ioSrvc.getProtocolHandler("file").QueryInterface(CI.nsIFileProtocolHandler);
  38.       
  39.      urn = fHandler.getURLSpecFromFile(archive);
  40.  
  41.      // Show the number of links in the header
  42.      links = gBkmService.dataSource.GetTarget(res,kLinkRes,true);  
  43.     
  44.      if(links)
  45.      { 
  46.        try {         
  47.          links.QueryInterface(CI.nsIRDFLiteral);
  48.          links = gDialog.bundle.getFormattedString("archives.numlinks", [links.Value]);
  49.        } catch(ex) {
  50.          links = "";
  51.        }
  52.      }
  53.      
  54.    } else {
  55.      urn = "rdf:null";
  56.    }
  57.    
  58.    gDialog.linkcount.value = links;
  59.    
  60.    gDialog.treebox.setAttribute("datasources",urn);
  61.    gDialog.treebox.builder.rebuild();
  62. }
  63.  
  64. function getSelectedArchive( res )
  65. {
  66.   var tree = gDialog.listbox;
  67.   var item = tree.contentView.getItemAtIndex(tree.currentIndex);
  68.  
  69.   if(item) 
  70.   {
  71.     var subject  = RDF.GetResource(item.id);
  72.     var property = RDF.GetResource(BKM_NS_PREFIX+"name");
  73.  
  74.     if(res)
  75.        res.value = subject;
  76.  
  77.     var target   = gBkmService.dataSource.GetTarget(subject,property,true);     
  78.     target.QueryInterface(CI.nsIRDFLiteral);
  79.     return target.Value;
  80.   }
  81.   
  82.   return null;
  83. }
  84.  
  85. /*!
  86.  * Display selected archive
  87.  */
  88. function onSelectArchive( event )
  89. {
  90.    var res     = { value:null };
  91.    var archive = getSelectedArchive(res);
  92.  
  93.    if(archive) 
  94.    {
  95.      displayArchive(archive,res.value);
  96.      gDialog.acceptbtn.removeAttribute("disabled");
  97.    } else
  98.      gDialog.acceptbtn.setAttribute("disabled","true");   
  99. }
  100.  
  101. /*!
  102.  * Handle max history change
  103.  */
  104. function onChangeMaxHistory() 
  105. {
  106.   var item = gDialog.history.selectedItem;
  107.   if(item) 
  108.   {
  109.     if(item.value=="custom")
  110.     {
  111.       var args = {};
  112.  
  113.       window.openDialog('chrome://yoono/content/bookmarks/prompthistory.xul',
  114.                         '', 'chrome,modal',args); 
  115.  
  116.       if(args.cancel)
  117.       {
  118.         // User has cancelled the dialog
  119.         // Restore value from prefs
  120.         gDialog.history.value = PREFS.getIntPref(kHistoryPref);
  121.         return;
  122.       }
  123.       
  124.       // Set custom item
  125.       item = setMaxHistory(args.value);
  126.     }
  127.  
  128.     // Ask confirmation if we are going to delete
  129.     // archives
  130.     if(gBkmService.numArchives > Number(item.value)) {
  131.       if(!confirm(gDialog.bundle.getString("deletearchives.confirm"))) 
  132.       {
  133.          // Restore value from prefs
  134.          gDialog.history.value = PREFS.getIntPref(kHistoryPref);
  135.          return;
  136.       }
  137.     }
  138.  
  139.     if(gDialog.history.selectedItem != item)
  140.        gDialog.history.value = item.value;
  141.  
  142.     // Set value to pref, service should be notified
  143.     PREFS.setIntPref(kHistoryPref,item.value);
  144.   }
  145. }
  146.  
  147.  
  148. function setMaxHistory( aValue )
  149. {
  150.   var item  = document.getElementById("custom-history");
  151.   item.setAttribute("value",aValue);
  152.   item.setAttribute("label",aValue);
  153.   return item;
  154. }
  155.  
  156. function onAcceptDialog()
  157. {
  158.   // Ask confirmation for replacing BookMarkFile
  159.   if(confirm(gDialog.bundle.getString("replacebookmarks.confirm"))) 
  160.   {
  161.     var archive = getSelectedArchive();
  162.     gBkmService.restore(archive);
  163.   }
  164. }
  165.  
  166. function onCancelDialog()
  167. {
  168.   // Nothing to do
  169. }
  170.  
  171. function onInitDialog()
  172. {
  173.   gBkmService = Components.classes['@yoono.com/bookmarks-restore;1']
  174.                  .getService().wrappedJSObject;
  175.  
  176.   gDialog.listbox   = document.getElementById("backuplistbox"); 
  177.   gDialog.treebox   = document.getElementById("bookmarks-tree");
  178.   gDialog.history   = document.getElementById("maxhistorymenu");
  179.   gDialog.bundle    = document.getElementById("bundle");
  180.   gDialog.acceptbtn = document.getElementById("acceptbtn");
  181.   gDialog.linkcount = document.getElementById("linkcount");
  182.   
  183.   var dataSource  = gBkmService.dataSource;
  184.   
  185.   gDialog.listbox.database.AddDataSource(dataSource);
  186.   gDialog.listbox.builder.rebuild();
  187.   
  188.   var item = setMaxHistory(PREFS.getIntPref(kHistoryPref));
  189.   gDialog.history.value = item.value;
  190. }
  191.